All of today's important business and consumer applications rely on communications infrastructures such as the Internet. Businesses and consumers may have multiple servers for communicating among various locations, for handling customer requests, transactions etc. A front-end load balancer can be used to balance the requests among the various servers and determine which server should handle the next request.
There are a variety of load balancing methods that balance an offered load based on network topology and routing information. For example, round robin, weighted round robin, Hypertext Transfer Protocol (HTTP) header-based, response time, Internet Protocol (IP) address hashing, Uniform Resource Locator (URL)-hashing, etc. However, these load balancing methods are based only on network topology and routing information. The real state of the network is not taken into account and all the existing paths are not made available in the routing table. Furthermore, if preference is allowed in the load balancing method, the preferred path cannot be chosen on a per flow basis but, instead, is assigned randomly by computing the hashing. The computation of hashing doesn't take into account the network's real state (e.g., a current status) for the different paths. Thus, existing load balancing methods imply that the route metrics on the different paths are identical and the flows are to be distributed randomly.
Therefore, there is a need for a flow based load balancing method that distributes load not only in accordance with topology and routing information but also accounts for a current status of the various paths.